home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zh.d64
/
use'sound.proc
< prev
Wrap
Text File
|
2007-03-01
|
4KB
|
143 lines
9000 // DELETE "@:USE'SOUND.PRC"
9001 //
9002 // LIST "USE'SOUND.PRC"
9003 //
9004 //////////////////////////////////
9005 // SOUND PROCEDURES FOR //
9006 // CBM COMAL-80 VS 0.14 //
9007 // EMULATING SOUND PROCEDURES //
9008 // IN VS 2.00, 2.01 //
9009 // //
9010 // BY DICK KLINGENS //
9011 // (C) 1984 DUTCH COMAL USERS //
9012 // GROUP - THE HAGUE //
9013 //////////////////////////////////
9014 //
9015 // EXAMPLE:
9016 // RUN
9017 // USE'SOUND
9018 // INIT'VOICES
9019 // NOTE(1,"C4")
9020 // GATE(1,1)
9021 // GATE(1,0)
9022 // VOLUME(0)
9023 //
9024 // TRANSLATIONS:
9025 //
9026 // DUTCH --> ENGLISH
9027 //
9028 // STEM --> VOICE
9029 // STERKTE --> LEVEL
9030 // JN --> YESNO
9031 // SRT --> TYPE
9032 // BASIS --> BASE
9033 // NOTEN --> NOTES
9034 // RIJ --> SEQUENCE
9035 //
9036 PROC ADSR(STEM,A,D,S,R)
9037 P:=5+(STEM-1)*7
9038 POKE SID+P,A*16+D
9039 POKE SID+P+1,S*16+R
9040 ENDPROC ADSR
9041 //
9042 PROC VOLUME(STERKTE)
9043 POKE SID+24,STERKTE
9044 ENDPROC VOLUME
9045 //
9046 PROC GATE(STEM,JN)
9047 P:=4+(STEM-1)*7
9048 W:=CONTROL(STEM)
9049 IF JN THEN
9050 W:=W-(W MOD 2)+1
9051 ELSE
9052 W:=W-(W MOD 2)
9053 ENDIF
9054 POKE SID+P,W
9055 CONTROL(STEM):=W
9056 ENDPROC GATE
9057 //
9058 PROC SOUNDTYPE(STEM,SRT)
9059 P:=4+(STEM-1)*7
9060 CONTROL(STEM):=2^(SRT+3)
9061 POKE SID+P,CONTROL(STEM)
9062 ENDPROC SOUNDTYPE
9063 //
9064 PROC USE'SOUND
9065 SID:=54272
9066 FOR P:=0 TO 24 DO POKE SID+P,0
9067 //
9068 DIM NOTEN$ OF 3*96, VALUE(0:95)
9069 DIM CONTROL(3)
9070 //
9071 NR:=-1
9072 FOR OKT:=0 TO 7 DO
9073 RESTORE // BASIS
9074 FOR NT:=1 TO 12 DO
9075 NR:+1
9076 READ B
9077 W:=B/2^(7-OKT)
9078 VALUE(NR):=W
9079 ENDFOR NT
9080 ENDFOR OKT
9081 //
9082 FOR NT:=0 TO 95 DO
9083 READ NOTEN$(NT*3+1:NT*3+3)
9084 ENDFOR NT
9085 //
9086 BASIS:
9087 DATA 34334,36376,38539,40830
9088 DATA 43258,45830,48556,51443
9089 DATA 54502,57743,61176,64814
9090 //
9091 NOTENRIJ:
9092 DATA "C0","C0#","D0","D0#","E0","F0","F0#","G0","G0#","A0","A0#","B0"
9093 DATA "C1","C1#","D1","D1#","E1","F1","F1#","G1","G1#","A1","A1#","B1"
9094 DATA "C2","C2#","D2","D2#","E2","F2","F2#","G2","G2#","A2","A2#","B2"
9095 DATA "C3","C3#","D3","D3#","E3","F3","F3#","G3","G3#","A3","A3#","B3"
9096 DATA "C4","C4#","D4","D4#","E4","F4","F4#","G4","G4#","A4","A4#","B4"
9097 DATA "C5","C5#","D5","D5#","E5","F5","F5#","G5","G5#","A5","A5#","B5"
9098 DATA "C6","C6#","D6","D6#","E6","F6","F6#","G6","G6#","A6","A6#","B6"
9099 DATA "C7","C7#","D7","D7#","E7","F7","F7#","G7","G7#","A7","A7#","B7"
9100 //
9101 ENDPROC USE'SOUND
9102 //
9103 PROC NOTE(STEM,N$)
9104 NR:=((N$ IN NOTEN$)-1)/3
9105 P:=(STEM-1)*7
9106 POKE SID+P,VALUE(NR) MOD 256
9107 POKE SID+P+1,VALUE(NR) DIV 256
9108 ENDPROC NOTE
9109 //
9110 PROC INIT'VOICES
9111 ADSR(1,0,4,12,10)
9112 ADSR(2,10,8,10,9)
9113 ADSR(3,1,9,1,9)
9114 FOR STEM:=1 TO 3 DO
9115 PULSE(STEM,2048)
9116 SETFREQUENCY(STEM,0)
9117 ENDFOR STEM
9118 VOLUME(15)
9119 SOUNDTYPE(1,1)
9120 SOUNDTYPE(2,2)
9121 SOUNDTYPE(3,3)
9122 ENDPROC INIT'VOICES
9123 //
9124 PROC PULSE(STEM,F)
9125 P:=2+(STEM-1)*7
9126 POKE SID+P,F MOD 256
9127 POKE SID+P+1,F DIV 256
9128 ENDPROC PULSE
9129 //
9130 PROC SETFREQUENCY(STEM,F)
9131 P:=(STEM-1)*7
9132 POKE SID+P,F MOD 256
9133 POKE SID+P+1,F DIV 256
9134 ENDPROC SETFREQUENCY
9135 //
9136 PROC DISCARD
9137 SID:=54272
9138 FOR P#:=0 TO 24 DO POKE SID+P#,0
9139 ENDPROC DISCARD
9140 //
9141 // END OF USE'SOUND